<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="stylesheet" href="../css/monokai-sublime.css">
    <link rel="stylesheet" href="../css/note.css">

    <script src="../js/highlight.pack.js"></script>
    <script src="../js/fixHighLight.js"></script>

    <script>

        hljs.initHighlightingOnLoad();

    </script>

    <title>Git多账户配</title>
</head>
<body onload="replaceCode2ulli()">
<div class="detailTitle">Git多账户配置</div>
<div class="detailContent">

    <h3>背景介绍</h3>
    <p>公司内部有一个git仓库，用户名是公司邮箱，自己在github，gitee上也有帐号，所以需要在同一台机器上配置多个git账户。</p>
    <h3>git配置修正</h3>
    <p>多账号时，需将git的全局配置删除，否则可能会导致你在不同库提交时用户名串了，删除操作如下</p>
<pre><code class="Bash">
git config --global --unset user.name
git config --global --unset user.email
</code></pre>

    <p>设置完成之后可以查看全局配置</p>

    <pre><code class="Bash">
git config --list
</code></pre>


    <p>以后每次clone项目时，需要局部设置对应库下的name和email，操作如下</p>
<pre><code class="Bash">
git config user.name "NiDuiYingKuDeYongHuMing"
git config user.email "NiDuiYingKuDeEmail"
</code></pre>

    <h3>配置ssh</h3>
    <p>对你的公司库的邮箱生成公钥和私钥：</p>

<pre><code class="Bash">
ssh-keygen -t rsa -C "email-company"
</code></pre>

    <p>
        回车之后，输入文件名，比如company_rsa，之后可不用设置密码一路回车结束，则生成company_rsa和company_rsa_pub两个文件，文件存放在你的终端的pwd命令的结果目录下，将company_rsa_pub上传到你公司git库的ssh
        key里去。</p>
    <p>对你的第三方库的邮箱生成公钥和私钥：</p>


<pre><code class="Bash">
ssh-keygen -t rsa -C "email-your-personal"
</code></pre>

    <p>回车之后，输入文件名，比如personal_rsa，之后可不用设置密码一路回车结束，则生成personal_rsa和personal_rsa_pub两个文件，将personal_rsa_pub上传到你第三方git库的ssh
        key里去。比如上传到码云ssh key里，上传成功之后，可以用命令进行测试：</p>
    <pre><code class="Bash">
ssh -T git@gitee.com
</code></pre>
    <p>返回：</p>
    <pre><code class="Bash">
Hi 你的码云的用户名! You ve successfully authenticated, but Gitee.com does not provide shell access.
</code></pre>
    <p>则说明git的ssh key配置成功。你还可以通过命令：</p>
    <pre><code class="Bash">
ssh-add ~/.ssh/personal_rsa
</code></pre>
    <p>将你的私钥加入到ssh的缓存里。</p>
    <p>进入ssh的配置文件夹，windows的通常在C:\Users\Administrator\.ssh的目录下，mac os的通常在~/.ssh目录下，新建名为config的文件，#开头表示注释，配置内容如下：</p>

    <pre><code class="Bash">
# 该文件用于配置私钥对应的服务器

# 配置公司的账户
Host xxxx.com #给公司的host起一个别名，最好与HostName一致，这样ssh方式clone项目时不需要修改git路径
HostName xxxx.com #公司git的地址
User yourCompanyUsername #公司用户名
IdentityFile ~/.ssh/company_rsa

# 配置你github的账户
Host github.com
HostName github.com
User NiDuiYingKuDeYongHuMing
IdentityFile ~/.ssh/personal_rsa

# tips:如果你github和gitee的email是一样的,则可以上传相同的personal_rsa_pub到gitee后，此处可再配置一个gitee的账户
# 配置你gitee的账户
#Host gitee.com
#HostName gitee.com
#User NiDuiYingKuDeYongHuMing
#IdentityFile ~/.ssh/personal_rsa
</code></pre>



    <p>如果你的config里Host与HostName不一致，则需要在clone的时候进行一点修正：</p>
    <pre><code class="Bash">
git@github.com:xxxxxx/xxxx.xxxx.xxxx.git
    </code></pre>
    <p>修改为</p>
    <pre><code class="Bash">
git@你取的别名:xxxxxx/xxxx.xxxx.xxxx.git
    </code></pre>

    <p>有了这样的配置以后，就可以在一台机器上多个账户使用不同git库了。</p>
</div>
<div class="note_footer">
    <p><font color=red>&hearts;</font></p>
    <img src="../images/qr.png"></img></div>
</body>
</html>